
package Type_2_linked.title1_P203;


import Type_2_linked.common.ListNode;

import static Type_2_linked.common.ListNode.createLinkedList;
import static Type_2_linked.common.ListNode.printListNode;

//203.移除链表元素(原来的链表)
public class P203_1 {


    //移除链表元素
    public static ListNode removeElements(ListNode head, int val) {

        //TODO 删除链表开头所有值等于 val 的连续节点，直到遇到第一个值不等于 val 的节点作为新的链表头
        while (head != null && head.val == val) {
            head = head.next;
        }


        if (head == null) {
            return head;
        }

        ListNode current = head;
        while (current.next != null) {

            if (current.next.val == val) {
                current.next = current.next.next;  // TODO 跳过要删除的节点
            } else {
                current = current.next;  // TODO 移动指针
            }
        }

        return head;
    }


    public static void main(String[] args) {

//        int[] arr = {};
        int[] arr = {1, 2, 6, 3, 4, 5, 6};
        int val = 6;
        ListNode head = createLinkedList(arr);  //TODO 创建链表


        ListNode result = removeElements(head, val);


        printListNode(result);  //打印
    }

}
